freeslot(
	"MT_AWLF_MAIN", --spawns the cluster leaves
	"MT_AWLF", --cluster AWLF itself
	"S_AWLF",  --State of the cluster leaves
	"S_AWLF2",
	"S_AWLF3",
	"S_AWLF4",
	"S_AWLF5",
	"SPR_AWLF" --Name of the graphics sprite
)

mobjinfo[MT_AWLF] = {
	doomednum = -1,
	spawnhealth = -1,
	spawnstate = S_AWLF2,
	seestate = S_AWLF2,
	speed = 0*FRACUNIT,
	radius = 1*FRACUNIT,
	height = 1*FRACUNIT,
	flags = MF_NOGRAVITY
}

states[S_AWLF2] = {SPR_AWLF, FF_PAPERSPRITE|A, 1, A_None, 0, 0, S_AWLF2}

mobjinfo[MT_AWLF_MAIN] = {
	doomednum = 896, --object number
	spawnstate = S_AWLF,
	seestate = S_AWLF,
	reactiontime = TICRATE,
	speed = 0*FRACUNIT,
	radius = 32*FRACUNIT,
	height = 2*FRACUNIT,
	flags = MF_NOGRAVITY
}
states[S_AWLF] = {SPR_NULL, A, 10, A_None, 0, 0, S_AWLF}


addHook("MobjThinker", function(mobj)
	if not (mobj and mobj.valid)
		return end	
		

	if mobj.awlftics == nil
		mobj.awlftics = 0
		mobj.zdrop = 0
		mobj.awlfspd = 0
	end
	if mobj.awlftics < 25
		mobj.awlftics = $ + 1
	end
	if mobj.awlftics == 25
		mobj.awlftics = 0
		mobj.zdrop = P_RandomRange(-5,-2)*FRACUNIT
		mobj.awlfspd = P_RandomRange(-3,3)*FRACUNIT

			
	end
		
	mobj.angle = $ + ANG1*P_RandomRange(4,8)
	P_SetObjectMomZ(mobj, mobj.zdrop, nil)
	P_InstaThrust(mobj, mobj.angle, mobj.awlfspd)	

	


	if P_IsObjectOnGround(mobj) 
	or mobj.eflags & MFE_TOUCHWATER
		P_KillMobj(mobj,mobj,nil)
	end
end,MT_AWLF
)

addHook("MobjThinker", function(mobj)
	for player in players.iterate
	local mobjrange = R_PointToDist2(player.mo.x, player.mo.y, mobj.x, mobj.y)
		if not (mobj and mobj.valid)
		
		return end	
		if mobjrange >= 4096*FRACUNIT --range to determine when to drop
		return end	

		if mobj.awlftics == nil
			mobj.awlftics = 0
		end
		if mobj.awlftics < 7
			mobj.awlftics = $ + 1
		end
		if mobj.awlftics == 7 --timed rate at which the leaves drop
		
			mobj.awlftics = 0
			P_SpawnMobj(mobj.x + P_RandomRange(-2048,2048)*FRACUNIT, mobj.y + P_RandomRange(-2048,2048)*FRACUNIT, mobj.z + 512*FRACUNIT + P_RandomRange(-128,128)*FRACUNIT,MT_AWLF)
		end
	end
end,MT_AWLF_MAIN
)
